package java学习.第01章_Java语言概述;

/**
 * java优缺点
 * 跨平台性：这是Java的核心优势。Java在最初设计时就很注重移植和跨平台性。比如：Java的int永远都是32位。
 *          不像C++可能是16，32，可能是根据编译器厂商规定的变化。
 * 面向对象性：面向对象是一种程序设计技术，非常`适合大型软件的设计和开发`。面向对象编程支持封装、继承、多态等特性，让程序更好达到`高内聚`，`低耦合`的标准
 *
 * **健壮性：**吸收了C/C++语言的优点，但去掉了其影响程序健壮性的部分（如指针、内存的申请与释放等），提供了一个相对安全的内存管理和访问机制。
 * **安全性高：**
 Java适合于网络/分布式环境，需要提供一个安全机制以防恶意代码的攻击。如：`安全防范机制`（ClassLoader类加载器），可以分配不同的命名空间以防替代本地的同名类、字节代码检查。
 * **简单性：**

 Java就是C++语法的`简化版`，我们也可以将Java称之为“`C++--`”。比如：头文件，指针运算，结构，联合，操作符重载，虚基类等。

 * **高性能：**

 - Java最初发展阶段，总是被人诟病“`性能低`”；客观上，高级语言运行效率总是低于低级语言的，这个无法避免。Java语言本身发展中通过虚拟机的优化提升了`几十倍运行效率`。比如，通过JIT(JUST IN TIME)即时编译技术提高运行效率。

 - `Java低性能的短腿，已经被完全解决了`。业界发展上，我们也看到很多C++应用转到Java开发，很多C++程序员转型为Java程序员。

 #### 14.1.2 缺点

 - `语法过于复杂、严谨`，对程序员的约束比较多，与python、php等相比入门较难。但是一旦学会了，就业岗位需求量大，而且`薪资待遇节节攀升`。
 - 一般适用于大型网站开发，`整个架构会比较重`，对于初创公司开发和维护人员的成本比较高（即薪资高），选择用Java语言开发网站或应用系统的需要一定的经济实力。
 - `并非适用于所有领域`。比如，Objective C、Swift在iOS设备上就有着无可取代的地位。浏览器中的处理几乎完全由JavaScript掌控。Windows程序通常都用C++或C#编写。Java在服务器端编程和跨平台客户端应用领域则很有优势。

 *
 *
 */

/**
 * Java程序在运行过程中，涉及到运算的`数据的分配`、`存储`等都由JVM来完成
 * Java消除了程序员回收无用内存空间的职责。
 *  提供了一种系统级线程跟踪存储空间的分配情况，
 *  在内存空间达到相应阈值时，检查并释放可被释放的存储器空间。
 * GC的自动回收，提高了内存空间的利用效率，也提高了编程人员的效率，
 *  很大程度上`减少了`因为没有释放空间而导致的`内存泄漏`。
 *
 *  Java程序还会出现内存溢出和内存泄漏问题吗？  Yes!
 *
 *
 */

/**
 * 如何看待 Java 是一种半编译半解释型语言
 *
 * :因为 .java编译成 .class 文件后
 *  类加载器经过字节码验证器
 *
 *  进行解释器执行解释或JIT编译器编译执行（半编译半解释型语言）
 *
 */
public class H_java核心机制JVM {
}
